/*
* leetcode 476. 环绕字符串中唯一的子字符串
* 
定义字符串 base 为一个 "abcdefghijklmnopqrstuvwxyz" 无限环绕的字符串，所以 base 看起来是这样的：
"...zabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd....".
给你一个字符串 s ，请你统计并返回 s 中有多少 不同非空子串 也在 base 中出现。

示例 1：

输入：s = "a"
输出：1
解释：字符串 s 的子字符串 "a" 在 base 中出现。
* */
/*

* */
import java.util.*;

class Solution {
    public int findSubstringInWraproundString(String s) {
        char[] cs=s.toCharArray();
        int n=s.length(),sum=0;
        int[] dp=new int[n];
        int[] arr=new int[26];
        dp[0]=1;
        arr[cs[0]-'a']=1;
        for(int i=1;i<n;i++){
            dp[i]=1;
            if(cs[i]==cs[i-1]+1||cs[i-1]=='z'&&cs[i]=='a'){
                dp[i]+=dp[i-1];
            }

            arr[cs[i]-'a']=Math.max(arr[cs[i]-'a'],dp[i]);
        }
        for(int i=0;i<26;i++){
            sum+=arr[i];
        }
        return sum;
    }
}